home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / cgazv5n4.arc / HUFF.H < prev    next >
C/C++ Source or Header  |  1991-09-23  |  1KB  |  41 lines

  1. /*--- Listing 1 ------------------------- HUFF.H --------------
  2.  * Author:     Anton Kruger,  5 October, 1990
  3.  *
  4.  * Copyright (c) Truda Software
  5.  * 814 Benton Drive, #34,
  6.  * Iowa City, IA 52246
  7.  *
  8.  * Description:   Include file for the two routines "huff_zip" 
  9.  *                and "huff_unzip" that perform file compression 
  10.  *                using the Huffman algorithm.
  11.  --------------------------------------------------------------*/
  12.  
  13.          /* Size of I/O buffers for setvbuff   */
  14. #define  BUFFER_SIZE    16384  
  15.          /* Max # of unique symbols in file    */
  16. #define  MAXSYM         256    
  17.          /* Max # of nodes in Huffman tree     */
  18. #define  MAXNOD         2*MAXSYM-1
  19.          /* Indicates a left son in tree       */
  20. #define  LEFT           1  
  21.          /* Indicates a right son in tree      */
  22. #define  RIGHT          0   
  23.          /* Indicates no father, son for node  */
  24. #define  NONE          -1   
  25.          /* Actual # of unique symbols in file */
  26. int      nsymbols;
  27.          /* Number of characters in input file */
  28. unsigned long  nchars;
  29.  
  30. int      left_son[MAXNOD];
  31. int      right_son[MAXNOD];
  32. int      father[MAXNOD];
  33. unsigned long freq[MAXNOD];
  34. unsigned char symbol[MAXSYM];
  35.  
  36. /* Tests bit "ib" in "byte"    */
  37. #define btest(byte,ib) (byte & (1<<ib))   
  38. /* Sets bit "ib" in "byte"     */
  39. #define ibset(byte,ib) (byte | (1<<ib))   
  40.  
  41. #include <limits.h>  /* for ULONG_MAX used in build_tree() */